package pe.com.bbva.pct.aspect;

import java.lang.reflect.Field;
import java.util.Date;

import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect
public class AuditoriaAspect {
	private static final Logger log = Logger.getLogger(AuditoriaAspect .class);
	
	@Before("execution(* pe.com.bbva.pct.dao.GeneralDAO.insertarObjeto(..))")
	public void antesInsertarObjeto(JoinPoint joinPoint) throws Exception {		
		Object objetoInsertar=joinPoint.getArgs()[0];
		Class objclass=objetoInsertar.getClass().getSuperclass();

		Field usuarioCreacion = objclass.getDeclaredField("usuarioCreacion");
		usuarioCreacion.setAccessible(true);
		usuarioCreacion.set(objetoInsertar, "Erick");
		
		Field fechaCreacion = objclass.getDeclaredField("fechaCreacion");
		fechaCreacion.setAccessible(true);
		fechaCreacion.set(objetoInsertar, new Date());
						
	}
	
	@Before("execution(* pe.com.bbva.pct.dao.GeneralDAO.actualizarObjeto(..))")
	public void antesActualizarObjeto(JoinPoint joinPoint) throws Exception {		
		Object objetoInsertar=joinPoint.getArgs()[0];
		Class objclass=objetoInsertar.getClass().getSuperclass();

		Field usuarioModificacion = objclass.getDeclaredField("usuarioModificacion");
		usuarioModificacion.setAccessible(true);
		usuarioModificacion.set(objetoInsertar, "Erick");
		
		Field fechaModificacion = objclass.getDeclaredField("fechaModificacion");
		fechaModificacion.setAccessible(true);
		fechaModificacion.set(objetoInsertar, new Date());						
	}
}
